package test1231;

import java.util.ArrayList;
import java.util.List;

public class CC {
    String name;
    List<EE> employees = new ArrayList<>();  // 使用 ArrayList 来存储员工

    public CC() {
    }

    public CC(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "CC{" +
                "name='" + name + '\'' +
                '}';
    }

    public void add(EE ee) {
        employees.add(ee);  // 使用 add() 方法来添加员工
    }

    // 重载：直接通过信息创建并添加员工
    public void add(String name, int age, int salary) {
        employees.add(new EE(name, age, salary));
    }

    public void printAll() {
        for (EE e : employees) {
            System.out.println(e);  // 打印所有员工信息
        }
    }

    // 找出年龄最大员工
    public EE m1() {
        if (employees.isEmpty()) return null;  // 如果没有员工，返回 null

        EE x = employees.get(0);  // 假设第一个员工为最大年龄的员工
        for (EE e : employees) {
            if (e.getAge() > x.getAge()) {
                x = e;  // 更新年龄最大员工
            }
        }
        return x;
    }

    // 找出工资最低的员工
    public EE m2() {
        if (employees.isEmpty()) return null;  // 如果没有员工，返回 null

        EE x = employees.get(0);  // 假设第一个员工为最低工资的员工
        for (EE e : employees) {
            if (e.getSalary() < x.getSalary()) {
                x = e;  // 更新工资最低的员工
            }
        }
        return x;
    }

    // 根据名字找到员工
    public EE m3(String name) {
        for (EE e : employees) {
            if (e.getName().equals(name)) {
                return e;  // 找到员工并返回
            }
        }
        return null;
    }

    // 求平均工资
    public double m4() {
        double sum = 0;
        for (EE e : employees) {
            sum += e.getSalary();  // 累加工资
        }
        return sum / employees.size();  // 返回平均工资
    }

    // 所有员工工资涨 500
    public void increaseSalary(int amount) {
        for (EE e : employees) {
            e.setSalary(e.getSalary() + amount);  // 增加员工工资
        }
    }

    // 打印工资高于平均工资的员工
    public List<EE> m5() {
        double averageSalary = m4();  // 计算平均工资
        List<EE> aboveAverage = new ArrayList<>();  // 用于存储符合条件的员工

        System.out.println("工资高于平均工资的员工：");
        for (EE e : employees) {
            if (e.getSalary() > averageSalary) {
                aboveAverage.add(e);  // 将符合条件的员工加入列表
            }
        }
        return aboveAverage;  // 返回结果列表
    }

    // 返回工资高于平均工资的员工
    public EE[] getAboveAverageSalaryEmployees() {
        double averageSalary = m4();
        EE[] aboveAverage = new EE[employees.size()];
        int index = 0;

        for (EE e : employees) {
            if (e.getSalary() > averageSalary) {
                aboveAverage[index++] = e;  // 保存符合条件的员工
            }
        }

        EE[] result = new EE[index];  // 创建精确大小的结果数组
        System.arraycopy(aboveAverage, 0, result, 0, index);

        return result;
    }
}
